'    Copyright 2008 Jan Molnar <jan.molnar@abds.de>
'
'    This file is part of JCQ.

'    JCQ is free software: you can redistribute it and/or modify
'    it under the terms of the GNU General Public License as published by
'    the Free Software Foundation, either version 2 of the License, or
'    (at your option) any later version.

'    JCQ is distributed in the hope that it will be useful,
'    but WITHOUT ANY WARRANTY; without even the implied warranty of
'    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
'    GNU General Public License for more details.

'    You should have received a copy of the GNU General Public License
'    along with JCQ. If not, see <http://www.gnu.org/licenses/>.

''' <summary>
''' The exception that is thrown when an attempt to find an implementation for a contract which does not exists fails.
''' </summary>
<Serializable()> _
Public Class ImplementationNotFoundException
    Inherits ArgumentException

    Public Sub New()
        MyBase.New(My.Resources.Strings.ImplementationNotFound_Generic)
    End Sub

    Public Sub New(ByVal message As String)
        MyBase.New(message)
    End Sub

    Public Sub New(ByVal message As String, ByVal innerException As Exception)
        MyBase.New(message, innerException)
    End Sub

    Public Sub New(ByVal typeInterface As System.Type)
        MyBase.New(String.Format(System.Globalization.CultureInfo.InvariantCulture, My.Resources.Strings.ImplementationNotFound_WithTypeName, typeInterface.FullName))
    End Sub

    Public Sub New(ByVal typeInterface As System.Type, ByVal innerException As Exception)
        MyBase.New(String.Format(System.Globalization.CultureInfo.InvariantCulture, My.Resources.Strings.ImplementationNotFound_WithTypeName, typeInterface.FullName), innerException)
    End Sub

    Protected Sub New( _
        ByVal info As System.Runtime.Serialization.SerializationInfo, _
        ByVal context As System.Runtime.Serialization.StreamingContext)
        MyBase.New(info, context)
    End Sub
End Class
